Vq-Vaes: Neural Discrete Representation Learning | Paper + Pytorch Code Explained